/**
 * 从url中解析GET参数
 * @param {string} url URL字符串
 * @returns {Object} 参数对象
 */
export function param2Obj(url) {
  const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
  if (!search) {
    return {}
  }
  const obj = {}
  const searchArr = search.split('&')
  searchArr.forEach(v => {
    const index = v.indexOf('=')
    if (index !== -1) {
      const name = v.substring(0, index)
      const val = v.substring(index + 1, v.length)
      obj[name] = val
    }
  })
  return obj
}

/**
 * 获取随机数
 * @param {number} min 最小值
 * @param {number} max 最大值
 * @returns {number} 随机数
 */
export function randomNum(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min
}

/**
 * 随机从数组中获取一个元素
 * @param {Array} arr 数组
 * @returns {*} 随机元素
 */
export function randomItem(arr) {
  return arr[Math.floor(Math.random() * arr.length)]
}

/**
 * 深拷贝对象
 * @param {Object} source 源对象
 * @returns {Object} 拷贝后的对象
 */
export function deepClone(source) {
  if (!source && typeof source !== 'object') {
    return source
  }
  const targetObj = source.constructor === Array ? [] : {}
  Object.keys(source).forEach(keys => {
    if (source[keys] && typeof source[keys] === 'object') {
      targetObj[keys] = deepClone(source[keys])
    } else {
      targetObj[keys] = source[keys]
    }
  })
  return targetObj
} 